<?php
/**
 * 日志类，监控系统性能，记录日志
 * @author Tujt 2014-06-11
 */
class PHPLog{
	public static $LOGFILE = 'php-execute-info.log'; //建一个常量,代表日志文件的名称
    public static $LOGPATH = 'logs'; //建一个常量,代表日志文件的名称
    private static $max_file = 1024 * 1024 * 3;//3M

    /**
	 * 检查日志文件是否存在，不存在则创建
	 * 检查日志文件是否超过默认大小（1024*1024 = 1M）
	 * 超过则备份原日志文件
     * @parem Integer $setype 是否为慢查询
     * @author Tujt 2014-06-11
     */
    private static function isbak($setype = 0){
        self::createdir(self::$LOGPATH);
		$route = './'.self::$LOGPATH.'/'.self::$LOGFILE;
        if(!file_exists($route)){//如果文件不存在,则创建该文件
            touch($route);
            return $route;
        }
        clearstatcache();// 清除缓存
        $size = filesize($route);
        if($size <= self::$max_file){//要是存在,则判断大小
            return $route;
        }else{
            if(!self::bak(self::$LOGFILE)){
                return $route;
            }else{
                touch($route);
                return $route;
            }
        }
    }
	/**
	 * 日志记录方法，用来做日志记录
	 * @parem String $cont 需要记录的内容
	 * @author Tujt 2014-06-11
	 */
	public static function info($cont) {
		$time = date('Y-m-d H:i:s',time());
		$cont = iconv('UTF-8','GB2312',$cont);
		$cont = '['.$time.'] '.$cont;
		$cont = $cont."\r\n";
		$route = self::isbak();
		$fh = fopen($route,'ab');
		fwrite($fh,$cont);
		fclose($fh);
	}
    /**
     * 记录日志
     * @author Toby.tu 2016-07-16
     */
    public static function set($content='',$file=''){
        if(empty($content)) return false;
        if(empty($file)) $file = self::$LOGFILE;
        else self::$LOGFILE = $file;
        self::info($content);
    }
	/**
	 * 备份日志文件，源文件修改名称，再创建一个新日志文件
	 * @parem Integer $setype 是否为慢查询
	 * @author Tujt 2014-06-11
	 */
	private static function bak($file){
		$route = './'.self::$LOGPATH.'/'.self::$LOGFILE;
		$files = explode('.',$file);
		$bak = './'.self::$LOGPATH.'/'.$files[0].$files[1].date('ymd',time()).mt_rand(10000,99999) .'.bak';
		return rename($route,$bak);
    }
    /**
     * 如果文件夹不存在，则递归创建文件夹
     * @param String $path 目录
     * @author Tujt 2013-07-08
     */
    private static function createdir($path){
        if (!file_exists($path)){
            self::createdir(dirname($path));//递归创建文件夹
            mkdir($path, 0777);
        }
    }
    /**
     * 如果文件不存在，则创建文件
     * @param String $path 目录
     * @author Tujt 2013-07-08
     */
    private static function createfile($route){
        if (!file_exists($route)){
            touch($route);
        }
    }
    /**
     * 修改日志文件夹地址
     * @author Toby.tu 2016-12-01
     */
    public static function setLogPath($path=''){
        if(empty($path)) return false;
        self::$LOGPATH = $path;
    }
    /**
     * 修改日志文件夹地址
     * @author Toby.tu 2016-12-01
     */
    public static function setLogFile($file=''){
        if(empty($file)) return false;
        self::$LOGFILE = $file;
    }
}
?>
